home *** CD-ROM | disk | FTP | other *** search
/ Aminet 3 / Aminet 3 - July 1994.iso / Aminet / dev / gui / gengui.lha / GenGui / Examples / back.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-04-29  |  8.2 KB  |  330 lines

  1. /*
  2.  * Source generated by GenGui V1.0
  3.  * which is (c)1994 by Matthias Meixner
  4.  */
  5.  
  6. #ifndef _GUI_LAYOUT
  7. #define _GUI_LAYOUT
  8.  
  9. #include <exec/types.h>
  10. #include <libraries/gadtools.h>
  11. #include <proto/gadtools.h>
  12.  
  13. #include <intuition/gadgetclass.h>
  14. #define GL_VBOX -1
  15. #define GL_HBOX -2
  16. #define CUSTOM_KIND -3
  17.  
  18. #define MODE_NEW     0
  19. #define MODE_RESIZE  1
  20. #define MODE_REFRESH 2
  21. #define MODE_FREE    3
  22. #define MODE_BACKUP  4
  23. #define MODE_RESTORE 5
  24.  
  25. #define BOXFLG_CUSTOM   1
  26. #define BOXFLG_STRING   2
  27. #define BOXFLG_INTEGER  4
  28. #define BOXFLG_DISABLED 8
  29. #define BOXFLG_BACKUP  16
  30. #define BOXFLG_INITED  (1<<15)
  31.  
  32. #define GetString(g) (((struct StringInfo * )g->SpecialInfo)->Buffer)
  33. #define GetNumber(g) (((struct StringInfo * )g->SpecialInfo)->LongInt)
  34. #define GetInfo(g) ((struct GadInfo *)((g)->UserData))
  35. #define GetUserData(g) (GetInfo(g)->UserData)
  36.  
  37. struct GadDim {
  38.    int Kind;
  39.    USHORT Rx,Ry,Cx,Cy,Px,Py,SRx,SRy,SPx,SPy;
  40.    USHORT Flags;
  41. };
  42.  
  43. struct Box {
  44.    struct GadDim Dim;
  45.    struct Box **Entry;
  46. };
  47.  
  48. struct WinInfo {
  49.    struct Box *Box;
  50.    struct Gadget **Gadgets;
  51.    struct Gadget *Prev;
  52.    struct Window *Window;
  53.    struct Gadget *GList;
  54.    int FontX,FontY;
  55.    struct TextAttr TextAttr;
  56.    APTR Visual;
  57.    char Mode,Render;
  58.    USHORT MinX,MinY;
  59. };
  60.  
  61. struct GadInfo {
  62.    struct GadDim dim;
  63.    int XSpace,YSpace,GadNum;
  64.    int (*CustomFunc)(struct WinInfo *WInfo,
  65.                      struct NewGadget *NewGad,
  66.                      struct GadInfo *GadInfo,
  67.                      int Left, int Top, int Width, int Height);
  68.    struct TextAttr *TextAttr;
  69.    char *Text;
  70.    int GadgetID;
  71.    ULONG Flags,UserData;
  72.    int(*HookFunc)(struct IntuiMessage *);
  73.    ULONG *Tags;
  74.    ULONG *SaveTags;
  75.    ULONG Code;
  76.    struct Gadget *ThisGad;
  77. };
  78.  
  79. int RenderGui(struct Window *win, struct WinInfo *winfo);
  80. int ResizeGui(struct WinInfo *winfo);
  81. int RefreshGui(struct WinInfo *winfo);
  82. void FreeGui(struct WinInfo *winfo);
  83. void StopGui(struct WinInfo *winfo);
  84. int SubGui(struct WinInfo *, struct WinInfo *,int ,int ,int , int );
  85.  
  86. void ClearWindow(struct Window *);
  87. struct IntuiMessage *Gui_GetIMsg(struct MsgPort *userport,struct IntuiMessage *);
  88.  
  89. BOOL Gui_SetGadgetAttrs(struct Gadget *,struct Window *,
  90.                         struct Requester *, ULONG ,...);
  91. BOOL Gui_SetGadgetAttrsA(struct Gadget *,struct Window *,
  92.                         struct Requester *, ULONG *);
  93. #endif
  94.  
  95. #include <proto/graphics.h>
  96. #define RED   1
  97. #define GREEN 2
  98. #define BLUE  3
  99. int PaletteHook(struct IntuiMessage *msg);
  100. int RedHook(struct IntuiMessage *msg);
  101. int GreenHook(struct IntuiMessage *msg);
  102. int BlueHook(struct IntuiMessage *msg);
  103. /* We cannot write this function here, since some values of the GUI are
  104.    not declared/defined yet, but we need the prototype */
  105. int ActiveColor=0;
  106. int Red;
  107. int Green;
  108. int Blue;
  109. struct Gadget *InnerField_Gadgets[4];
  110.  
  111. #define InnerField_RED 0
  112.  
  113. ULONG InnerFieldTags3[]={
  114.    PGA_Freedom,LORIENT_VERT ,GTSL_LevelPlace,PLACETEXT_BELOW ,GTSL_LevelFormat,(ULONG)"%2ld" ,GTSL_MaxLevelLen,2 ,TAG_DONE
  115. };
  116.  
  117. struct GadInfo InnerField3={
  118.    SLIDER_KIND,0,1,2,0,4+INTERWIDTH,0+0,0,0,0,0,0,
  119.    INTERWIDTH,INTERHEIGHT,0,NULL,NULL,
  120.    "",RED,0,0,RedHook ,InnerFieldTags3
  121. };
  122.  
  123. #define InnerField_GREEN 1
  124.  
  125. ULONG InnerFieldTags4[]={
  126.    PGA_Freedom,LORIENT_VERT ,GTSL_LevelPlace,PLACETEXT_BELOW ,GTSL_LevelFormat,(ULONG)"%2ld" ,GTSL_MaxLevelLen,2 ,TAG_DONE
  127. };
  128.  
  129. struct GadInfo InnerField4={
  130.    SLIDER_KIND,0,1,2,0,4+INTERWIDTH,0+0,0,0,0,0,0,
  131.    INTERWIDTH,INTERHEIGHT,1,NULL,NULL,
  132.    "",GREEN,0,0,GreenHook ,InnerFieldTags4
  133. };
  134.  
  135. #define InnerField_BLUE 2
  136.  
  137. ULONG InnerFieldTags5[]={
  138.    PGA_Freedom,LORIENT_VERT ,GTSL_LevelPlace,PLACETEXT_BELOW ,GTSL_LevelFormat,(ULONG)"%2ld" ,GTSL_MaxLevelLen,2 ,TAG_DONE
  139. };
  140.  
  141. struct GadInfo InnerField5={
  142.    SLIDER_KIND,0,1,2,0,4+INTERWIDTH,0+0,0,0,0,0,0,
  143.    INTERWIDTH,INTERHEIGHT,2,NULL,NULL,
  144.    "",BLUE,0,0,BlueHook ,InnerFieldTags5
  145. };
  146.  
  147. struct Box *InnerFieldV2[]={
  148.    (struct Box *)&InnerField3,
  149.    (struct Box *)&InnerField4,
  150.    (struct Box *)&InnerField5,
  151.    NULL
  152. };
  153.  
  154. struct Box InnerField2={
  155.    GL_HBOX,1,1,0,0,0+0,0+0,0,0,0,0,0,InnerFieldV2
  156. };
  157.  
  158. struct Box InnerField6={
  159.    GL_VBOX,1,0,0,1,0+0,4+INTERHEIGHT,0,0,0,0,0,NULL
  160. };
  161.  
  162. struct Box *InnerFieldV1[]={
  163.    &InnerField2,
  164.    &InnerField6,
  165.    NULL
  166. };
  167.  
  168. struct Box InnerField1={
  169.    GL_VBOX,0,1,3*2,0,2*INTERWIDTH+3*4+INTERWIDTH,0+0,0,0,0,0,0,InnerFieldV1
  170. };
  171.  
  172. #define InnerField_0 3
  173.  
  174. ULONG InnerFieldTags7[]={
  175.    GTPA_Depth,2 ,GTPA_IndicatorWidth,20 ,TAG_DONE
  176. };
  177.  
  178. struct GadInfo InnerField7={
  179.    PALETTE_KIND,1,1,0,0,0+0,0+0,0,0,0,0,0,
  180.    INTERWIDTH,INTERHEIGHT,3,NULL,NULL,
  181.    "",0,0,0,PaletteHook ,InnerFieldTags7
  182. };
  183.  
  184. struct Box *InnerFieldV0[]={
  185.    &InnerField1,
  186.    (struct Box *)&InnerField7,
  187.    NULL
  188. };
  189.  
  190. struct Box InnerField0={
  191.    GL_HBOX,1,1,0,0,0+0,0+0,0,0,0,0,0,InnerFieldV0
  192. };
  193.  
  194. struct WinInfo InnerField = {
  195.    &InnerField0,InnerField_Gadgets
  196. };
  197.  
  198. int PaletteHook(struct IntuiMessage *msg)
  199. {
  200.    ULONG rgb;
  201.    if(msg) ActiveColor=msg->Code; // This function is also called from
  202.    rgb=GetRGB4(InnerField.Window->WScreen->ViewPort.ColorMap,ActiveColor);
  203.    Red=rgb>>8;
  204.    rgb&=0xff;
  205.    Green=rgb>>4;
  206.    rgb&=0xf;
  207.    Blue=rgb;
  208.    Gui_SetGadgetAttrs(InnerField_Gadgets[InnerField_RED],InnerField.Window,NULL,
  209.                      GTSL_Level,Red,TAG_DONE);
  210.    Gui_SetGadgetAttrs(InnerField_Gadgets[InnerField_GREEN],InnerField.Window,NULL,
  211.                      GTSL_Level,Green,TAG_DONE);
  212.    Gui_SetGadgetAttrs(InnerField_Gadgets[InnerField_BLUE],InnerField.Window,NULL,
  213.                      GTSL_Level,Blue,TAG_DONE);
  214.    /* IMPORTANT! You must store the values also in the "Code" field of the
  215.       Gadinfo structure, or it would not be vailable for resizing */
  216. #if 0
  217.    GetInfo(InnerField_Gadgets[InnerField_RED])->Code=Red;
  218.    GetInfo(InnerField_Gadgets[InnerField_GREEN])->Code=Green;
  219.    GetInfo(InnerField_Gadgets[InnerField_BLUE])->Code=Blue;
  220. #endif
  221.    return(1);
  222. }
  223. int RedHook(struct IntuiMessage *msg)
  224. {
  225.    Red=msg->Code;
  226.    SetRGB4(&InnerField.Window->WScreen->ViewPort,ActiveColor,Red,Green,Blue);
  227.    return(1);
  228. }
  229. int GreenHook(struct IntuiMessage *msg)
  230. {
  231.    Green=msg->Code;
  232.    SetRGB4(&InnerField.Window->WScreen->ViewPort,ActiveColor,Red,Green,Blue);
  233.    return(1);
  234. }
  235. int BlueHook(struct IntuiMessage *msg)
  236. {
  237.    Blue=msg->Code;
  238.    SetRGB4(&InnerField.Window->WScreen->ViewPort,ActiveColor,Red,Green,Blue);
  239.    return(1);
  240. }
  241. int Custom(struct WinInfo *winfo,
  242.                      struct NewGadget *ng,
  243.                      struct GadInfo *gad,
  244.                      int left, int top, int width, int height)
  245. {
  246.    int ret;
  247.    if(winfo->Render) {
  248.             SetAPen(winfo->Window->RPort,0);
  249.             RectFill(winfo->Window->RPort,ng->ng_LeftEdge,ng->ng_TopEdge,
  250.                                      ng->ng_LeftEdge+ng->ng_Width-1,
  251.                                      ng->ng_TopEdge+ng->ng_Height-1);
  252.             DrawBevelBox(winfo->Window->RPort,ng->ng_LeftEdge,ng->ng_TopEdge,
  253.                                      ng->ng_Width,ng->ng_Height,
  254.                                      GT_VisualInfo,winfo->Visual,TAG_DONE);
  255.    }
  256.    ret=SubGui(winfo,&InnerField,ng->ng_LeftEdge,ng->ng_TopEdge,
  257.                                         ng->ng_Width,ng->ng_Height);
  258.    if(ret==0 && winfo->Mode==MODE_NEW) { // additional initialisation
  259.       PaletteHook(NULL);
  260.    }
  261.    return(ret);
  262. }
  263. struct Gadget *TestPro_Gadgets[3];
  264.  
  265. #define TestPro_99 0
  266.  
  267. ULONG TestProTags1[]={
  268.    TAG_DONE
  269. };
  270.  
  271. struct GadInfo TestPro1={
  272.    CUSTOM_KIND,1,1,0,0,0+0,0+0,0,0,0,0,BOXFLG_CUSTOM,
  273.    INTERWIDTH,INTERHEIGHT,0,Custom ,NULL,
  274.    "",99,0,0,NULL,TestProTags1
  275. };
  276.  
  277. #define TestPro_4 1
  278.  
  279. ULONG TestProTags3[]={
  280.    TAG_DONE
  281. };
  282.  
  283. struct GadInfo TestPro3={
  284.    BUTTON_KIND,1,0,0,1,0+0,4+INTERHEIGHT,0,0,0,0,0,
  285.    INTERWIDTH,INTERHEIGHT,1,NULL,NULL,
  286.    "OK" ,4,0,0,NULL,TestProTags3
  287. };
  288.  
  289. struct Box TestPro4={
  290.    GL_VBOX,1,1,0,0,0+0,0+0,0,0,0,0,0,NULL
  291. };
  292.  
  293. #define TestPro_5 2
  294.  
  295. ULONG TestProTags5[]={
  296.    TAG_DONE
  297. };
  298.  
  299. struct GadInfo TestPro5={
  300.    BUTTON_KIND,1,0,0,1,0+0,4+INTERHEIGHT,0,0,0,0,0,
  301.    INTERWIDTH,INTERHEIGHT,2,NULL,NULL,
  302.    "Cancel" ,5,0,0,NULL,TestProTags5
  303. };
  304.  
  305. struct Box *TestProV2[]={
  306.    (struct Box *)&TestPro3,
  307.    &TestPro4,
  308.    (struct Box *)&TestPro5,
  309.    NULL
  310. };
  311.  
  312. struct Box TestPro2={
  313.    GL_HBOX,1,0,0,1,0+0,4+INTERHEIGHT,0,0,0,0,0,TestProV2
  314. };
  315.  
  316. struct Box *TestProV0[]={
  317.    (struct Box *)&TestPro1,
  318.    &TestPro2,
  319.    NULL
  320. };
  321.  
  322. struct Box TestPro0={
  323.    GL_VBOX,1,1,0,0,0+0,0+0,0,0,0,0,0,TestProV0
  324. };
  325.  
  326. struct WinInfo TestPro = {
  327.    &TestPro0,TestPro_Gadgets
  328. };
  329.  
  330.